"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.generateUUID = generateUUID;
function generateUUID() {
  let globalObject;
  if (typeof self !== undefined) {
    globalObject = self;
  } else if (typeof window !== 'undefined') {
    globalObject = window;
  } else {
    globalObject = Function('return this')();
  }

  /** 内置 UUID 模块的情况下，直接使用内置 crypto 来生成 UUID（密码学安全） */
  if (globalObject?.crypto?.randomUUID) {
    return globalObject.crypto.randomUUID();
  }

  /** 无内置模块的情况下，采用算法生成 UUID（无法保证密码学安全） */
  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {
    const r = Math.random() * 16 | 0;
    const v = c === 'x' ? r : r & 0x3 | 0x8;
    return v.toString(16);
  });
}